Truyền thông đồng bộ và bất đồng bộ Truyền_thông_nối_tiếp

Trên thực tế, việc truyền thông nối tiếp không chỉ đơn thuần sử dụng một dây duy nhất để truyền tín hiệu mà cần thêm một vài cơ chế hỗ trợ khác để đảm bảo tính toàn vẹn và chính xác của dữ liệu truyền đi, đó là lí do mà phương pháp truyền thông nối tiếp đồng bộbất đồng bộ ra đời.[3] Truyền thông nối tiếp đồng bộ (synchronous transmission) đòi hỏi giữa phía truyền (sender) và phía nhận (receiver) phải được đồng bộ bởi tín hiệu xung clock.[3] Các giao thức sử dụng phương pháp này có thể kể đến như I²C, SPI, RS-232, FireWire, Ethernet, USB,... Khác với truyền thông đồng bộ, truyền thông bất đồng bộ (asynchronous transmission) không sử dụng xung clock để đồng bộ mà sử dụng bit chẵn (parity bit) để đảm bảo tính toàn vẹn dữ liệu, và những quy ước thuộc về phần cứng giữa 2 phía truyền-nhận. Ví dụ, phía truyền quy định cứ mỗi 1 mili giây sẽ gởi 1 bit dữ liệu và phía nhận cũng quy định là cứ 1 mili giây sẽ nhận 1 bit dữ liệu. Khi đó giữa phía truyền-nhận đã có thống nhất với nhau về tốc độ truyền nhận dữ liệu và đã có thể truyền nhận dữ liệu với nhau.[3]

Với truyền thông đồng bộ, quá trình truyền dữ liệu phải được thực thi trên cả phần cứng và phần mềm. Ví dụ như giao thức I²C (về phần cứng) đòi hỏi 2 dây cho quá trình truyền dữ liệu là SCL (cho việc đồng bộ xung clock) và dây SDA (cho việc gởi dữ liệu). Bên cạnh đó, để giao tiếp được giữa thiết bị master với các slave trong hệ thống I²C thì các slave phải có địa chỉ cụ thể (địa chỉ của thiết bị I²C được quy định bởi nhà sản xuất), các chương trình phần mềm để giao tiếp được giữa thiết bị master-slave trong hệ thống I²C từ đó phải định rõ địa chỉ của thiết bị cần giao tiếp.

Với truyền thông bất đồng bộ, quá trình truyền dữ liệu được thực thi chỉ trên phần cứng. Một bộ phận phần cứng phổ biến trong các dòng vi điều khiển hỗ trợ truyền thông bất đồng bộ là UART (Universal Asynchronous Receiver-Transmitter).

Tài liệu tham khảo

WikiPedia: Truyền_thông_nối_tiếp http://www.byteparadigm.com/kb/article/AA-00255 http://maxembedded.com/2013/09/serial-communicatio... http://www.societyofrobots.com/microcontroller_uar... http://pinouts.ru/pin_SerialPorts.shtml http://www.ee.surrey.ac.uk/Projects/Labview/multip... https://training-kits.appspot.com/serial-linux.htm... https://learn.sparkfun.com/tutorials/serial-commun... https://techdifferences.com/difference-between-syn... https://web.archive.org/web/20090226195855/http://...